//
//  File.swift
//  EasyEverything
//
//  Created by YangZhe on 17/3/22.
//  Copyright © 2017年 kuletech. All rights reserved.
//

open class YDeviceUtils{
    open class func getDeviceID() -> String{
        let uuidKey = "YFree.uuid"
        if let savedUUID = YKeychainManager.read(identifier: uuidKey) {
            return savedUUID as! String
        } else {
            let uuidString = "ios-\((UIDevice.current.identifierForVendor?.uuidString)!)"
            return YKeychainManager.sava(data: uuidString, withIdentifier: uuidKey) ? uuidString : ""
        }
    }
    
    open class func getDeviceName() -> String {
        let platform = getDevicePlatform()
        if platform == "iPhone1,1"  { return "iPhone 2G" }
        if platform == "iPhone1,2"  { return "iPhone 3G" }
        if platform == "iPhone2,1"  { return "iPhone 3GS" }
        if platform == "iPhone3,1"  { return "iPhone 4" }
        if platform == "iPhone3,2"  { return "iPhone 4" }
        if platform == "iPhone3,3"  { return "iPhone 4" }
        if platform == "iPhone4,1"  { return "iPhone 4S" }
        if platform == "iPhone5,1"  { return "iPhone 5" }
        if platform == "iPhone5,2"  { return "iPhone 5" }
        if platform == "iPhone5,3"  { return "iPhone 5c" }
        if platform == "iPhone5,4"  { return "iPhone 5c" }
        if platform == "iPhone6,1"  { return "iPhone 5s" }
        if platform == "iPhone6,2"  { return "iPhone 5s" }
        if platform == "iPhone7,1"  { return "iPhone 6 Plus" }
        if platform == "iPhone7,2"  { return "iPhone 6" }
        if platform == "iPhone8,1"  { return "iPhone 6s" }
        if platform == "iPhone8,2"  { return "iPhone 6s Plus" }
        if platform == "iPhone8,4"  { return "iPhone SE" }
        if platform == "iPhone9,1"  { return "iPhone 7" }
        if platform == "iPhone9,2"  { return "iPhone 7 Plus" }
        if platform == "iPhone10,1"  { return "iPhone 8" }
        if platform == "iPhone10,4"  { return "iPhone 8" }
        if platform == "iPhone10,2"  { return "iPhone 8 Plus" }
        if platform == "iPhone10,5"  { return "iPhone 8 Plus" }
        if platform == "iPhone10,3"  { return "iPhone X" }
        if platform == "iPhone10,6"  { return "iPhone X" }
        if platform == "iPod1,1"  { return "iPod Touch 1G" }
        if platform == "iPod2,1"  { return "iPod Touch 2G" }
        if platform == "iPod3,1"  { return "iPod Touch 3G" }
        if platform == "iPod4,1"  { return "iPod Touch 4G" }
        if platform == "iPod5,1"  { return "iPod Touch 5G" }
        if platform == "iPad1,1"  { return "iPad 1G" }
        if platform == "iPad2,1"  { return "iPad 2" }
        if platform == "iPad2,2"  { return "iPad 2" }
        if platform == "iPad2,3"  { return "iPad 2" }
        if platform == "iPad2,4"  { return "iPad 2" }
        if platform == "iPad2,5"  { return "iPad Mini 1G" }
        if platform == "iPad2,6"  { return "iPad Mini 1G" }
        if platform == "iPad2,7"  { return "iPad Mini 1G" }
        if platform == "iPad3,1"  { return "iPad 3" }
        if platform == "iPad3,2"  { return "iPad 3" }
        if platform == "iPad3,3"  { return "iPad 3" }
        if platform == "iPad3,4"  { return "iPad 4" }
        if platform == "iPad3,5"  { return "iPad 4" }
        if platform == "iPad3,6"  { return "iPad 4" }
        if platform == "iPad4,1"  { return "iPad Air" }
        if platform == "iPad4,2"  { return "iPad Air" }
        if platform == "iPad4,3"  { return "iPad Air" }
        if platform == "iPad4,4"  { return "iPad Mini 2G" }
        if platform == "iPad4,5"  { return "iPad Mini 2G" }
        if platform == "iPad4,6"  { return "iPad Mini 2G" }
        if platform == "iPad4,7"  { return "iPad Mini 3" }
        if platform == "iPad4,8"  { return "iPad Mini 3" }
        if platform == "iPad4,9"  { return "iPad Mini 3" }
        if platform == "iPad5,1"  { return "iPad Mini 4" }
        if platform == "iPad5,2"  { return "iPad Mini 4" }
        if platform == "iPad5,3"  { return "iPad Air 2" }
        if platform == "iPad5,4"  { return "iPad Air 2" }
        if platform == "iPad6,3"  { return "iPad Pro 9.7" }
        if platform == "iPad6,4"  { return "iPad Pro 9.7" }
        if platform == "iPad6,7"  { return "iPad Pro 12.9" }
        if platform == "iPad6,8"  { return "iPad Pro 12.9" }
        if platform == "i386"  { return "iPhone Simulator" }
        if platform == "x86_64"  { return "iPhone Simulator" }
        return platform
    }
    
    open class func getDevicePlatform() -> String{
        var systemInfo = utsname()
        uname(&systemInfo)
        return Mirror(reflecting: systemInfo.machine).children.reduce("") { identifier, element in
            guard let value = element.value as? Int8, value != 0 else { return identifier }
            return identifier + String(UnicodeScalar(UInt8(value)))
        }
    }
    
    open class func getDeviceVersion() -> Double{
        let version = UIDevice.current.systemVersion.split(".")[0]
        return Double(version)!
    }
}
